public class Solution222 {
    private int cnt;

    public int countNodes(TreeNode root) {
        cnt = 0;
        dfs(root);
        return cnt;
    }

    private void dfs(TreeNode root) {
        if (root == null) {
            return;
        }
        cnt++;
        dfs(root.left);
        dfs(root.right);
    }
}
/*
222. 完全二叉树的节点个数
https://leetcode.cn/problems/count-complete-tree-nodes/

给你一棵 完全二叉树 的根节点 root ，求出该树的节点个数。
完全二叉树 的定义如下：在完全二叉树中，除了最底层节点可能没填满外，其余每层节点数都达到最大值，
并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层，则该层包含 1~ 2^h 个节点。
提示：
树中节点的数目范围是[0, 5 * 10^4]
0 <= Node.val <= 5 * 10^4
题目数据保证输入的树是 完全二叉树
进阶：遍历树来统计节点是一种时间复杂度为 O(n) 的简单解决方案。你可以设计一个更快的算法吗？

dfs 遍历。
时间复杂度 O(n)
 */